<?php
/* ###############################################################################
 *
 * $Id: banner.php 59 2015-01-02 13:47:25Z expertsoftware.i@gmail.com $
 *
 * システム名
 *   PHP Web フレームワーク [Ponzu]
 *
 * 機能
 *   バナー ライブラリ
 *
 * バージョン
 *   0.0.0_0
 *
 * ライセンス
 *   LGPL v2.0
 *
 * 履歴
 *   2007/07/01 K.Sonohara
 *     新規作成。
 *
 * ###############################################################################*/

define("BANNER_TYPE_NORMAL", 0);
define("BANNER_TYPE_MINI", 1);
define("BANNER_TYPE_SIDE", 2);
define("BANNER_TYPE_HEADER", 3);

$banner_used = array();
$banner_exts = array("html", "htm", "txt");

/**
 * バナー処理。
 * @access  public
 */
function banner($type = BANNER_TYPE_NORMAL, $count = 1, $rand = true) {
  switch($type) {
    case BANNER_TYPE_MINI: {
      $dir = "mini";
    } break;
    case BANNER_TYPE_SIDE: {
      $dir = "side";
    } break;
    case BANNER_TYPE_HEADER: {
      $dir = "header";
    } break;
    default: {
      $dir = "normal";
    }
  }

	$dir = BANNER_HOME . $dir . "/";
	$files = listBanners($dir);

  $c=count($files);
	if ($count > 0) {
    $c= $count > $c ? $c : $count;
    for ( $i = 0; $i < $c; ++$i){
      if ($rand) { 
    		$filename = array_rand($files,1);
      } else {
    		$filename = array_keys($files)[$i];
      }
  		printHTML(loadBanner($dir.$filename));
    }
	}
}

/**
 * バナー処理。
 * @access  public
 */
function banner_mini($count = 1, $rand = true) {
  banner(BANNER_TYPE_MINI, $count, $rand);
}

/**
 * バナー処理。
 * @access  public
 */
function banner_side($count = 1, $rand = true) {
  banner(BANNER_TYPE_SIDE, $count, $rand);
}

/**
 * バナー処理。
 * @access  public
 */
function banner_normal($count = 1, $rand = true) {
  banner(BANNER_TYPE_NORMAL, $count, $rand);
}

/**
 * バナー処理。
 * @access  public
 */
function banner_header($count = 1, $rand = true) {
  banner(BANNER_TYPE_HEADER, $count, $rand);
}

/**
 * バナー一覧取得。
 * @access  public
 * @param   String  $dir 対象ディレクトリ
 * @return  String[] 処理結果
 */
function listBanners($dir) {
  global $banner_exts;
	return array_filter(listFiles($dir, $banner_exts), "filterBanner");
}

function filterBanner($filename) {
	global $banner_used;

	return !isset($banner_used[$filename]);
}

// バナー読み込み
function loadBanner($name) {
	global $banner_used;

	$file = loadTextFile($name);
	$banner_used[$name] = true;

	return $file;
}
?>
